package com.quanyan.club.service;

import com.quanyan.api.APIResponse;
import com.quanyan.club.entity.db.TbClub;
import com.quanyan.club.entity.db.TbClubSystemLogo;
import com.quanyan.club.entity.vo.req.admin.*;
import com.quanyan.club.entity.vo.resp.RespClubInfo;
import com.quanyan.club.entity.vo.resp.RespClubMemberInfo;
import com.quanyan.club.entity.vo.resp.admin.*;
import com.quanyan.common.Plugin.PageObj;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * Created by zhuo.shi on 2016/8/19.
 */
public interface ClubAdminMgmService {

    void reIndexClub(Integer clubId);
    
    PageObj<List<RespClubInfo>> queryClubList(ReqClubQuery clubQuery);

    RespClubDetails queryClubDetails(Date trendStartTime,Date trendEndTime);

    RespClubInfo getClubInfo(int clubId);

    void loadClubIndexAll();

    void loadActivityIndexAll();

    boolean updateClubInfo(ReqClubQuery clubQuery);

    PageObj<List<RespClubMemberInfo>> queryClubMemberList(int clubId, boolean isTeam, int pageNo, int pageSize);

    APIResponse updateClubMember(RespClubMemberInfo info);

    PageObj<List<TbClubSystemLogo>> queryClubSystemLogo(int sportTypeId, int pageNo, int pageSize);

    APIResponse deleteClubMember(int clubId, int uid, int larkAppId);

    PageObj<List<RespWithdrawRecord>> queryWithdrawRecord(ReqClubFinanceQuery query);

    List<TbClub> autoPrompting(String clubName);

    PageObj<List<RespClubMemberFinaceStream>> queryClubMemberFinaceStream(ReqClubFinanceQuery query);

    PageObj<List<RespClubActivityFinaceStream>> queryClubActFinaceStream(ReqClubFinanceQuery query);

    PageObj<List<RespClubFinanceReprot>> queryClubFinanceReport(ReqClubFinanceQuery query);

    /**
     * 获取俱乐部在线充值明细
     * @param query
     * @return
     */
    PageObj<List<RespClubRechargeStream>> queryClubRechargeStream(ReqClubRechargeQuery query);

    /**
     * 添加俱乐部相册
     * @param reqMultimediaAdd
     * @return
     */
    boolean add(ReqMultimediaAdd reqMultimediaAdd,int uid);


    /**
     * 俱乐部活动、赛事财务对账接口
     */
    RespClubFinanceSummaryVo queryClubFinanceReconciliationList(ReqClubFinanceReconciliationQuery query);

    List<RespClubFinanceReconciliationVo> exportClubFinanceReconciliationList(ReqClubFinanceReconciliationQuery query);

    PageObj<List<RespClubPaymentVo>> queryClubPaymentDetailsList(ReqClubPaymentQuery query);

    Map<String, List<RespClubOrderDetail>> queryActivityOrderList(Integer activityId,Integer pageNo,Integer pageSize);

    List<RespClubRechargeStream> queryClubRechargeStreamReport(ReqClubRechargeQuery query);
}
